# Create your views here.
from gestion.contactos.models import Contacto
from gestion.cuenta_corriente.views import *
from gestion.compras.models import Proveedor
class Resumen_de_gastos(Resumen_de_cuenta):
  
  class ReportForm(forms.Form):
		TIPOS = (
			('E','contado'),
			('C','cuenta corriente'),
		)	
		nombre = forms.CharField(max_length=50,required=False)
		cuit = forms.CharField(max_length=20,required=False)
		localidad = forms.CharField(max_length=20,required=False)
		fecha_factura_inicio = forms.DateField(required=False)
		fecha_factura_fin = forms.DateField(required=False)
		numero_factura = forms.CharField(required=False)
  
  
  
  def select(self):
      
                      
      return 	F('', items= [
              F('nombre',verbose='Nombre'),
              F('localidad',verbose='Localidad', title=False),
              F('cuit',verbose='Cuit', title=False),
              F('egresos', filter={'comprobante': 'numero_factura','fecha__gte':'fecha_factura_inicio','fecha__lte':'fecha_factura_fin'},items = [
                      F('"Factura"', verbose='Nombre'),
                      F('fecha',verbose='Fecha'),
                      F('comprobante',verbose='Comprobante'),
                      F('total',verbose='Importe', total = True),
                      F('pagado',verbose='Cobrado',total_child="pagos"),
                      F('get_saldo',verbose='Saldo', total= True),
                      F('pagos', items = [
                              F('"Recibo"', verbose='Nombre'),
                              F('importe',verbose="Cobrado",total=True), 
                              F('recibo_fecha', verbose='Fecha de pago'),
                              F('comprobante', verbose="Recibo"),
                      ]),
              ]),
              F('', verbose='Importe',total=True),
              F('', verbose='Cobrado',total=True),
              F('', verbose='Saldo',total=True),
      ])

  def query(self, form):
          clientes = self.personas()  #filter(ventas__comprobante__isnull=False)
          if form.cleaned_data['nombre']:
                  clientes = clientes.filter(nombre__icontains=form.cleaned_data['nombre'])
          if form.cleaned_data['cuit']:
                  clientes = clientes.filter(cuit=form.cleaned_data['cuit'])
          if form.cleaned_data['localidad']:
                  clientes = clientes.filter(localidad__nombre=form.cleaned_data['localidad'])
          if form.cleaned_data['fecha_factura_inicio']:
                  clientes = clientes.filter(egresos__fecha__gte=form.cleaned_data['fecha_factura_inicio']).distinct()
          if form.cleaned_data['fecha_factura_fin']:
                  clientes = clientes.filter(egresos__fecha__lte=form.cleaned_data['fecha_factura_fin']).distinct()
          if form.cleaned_data['numero_factura']:
                  clientes = clientes.filter(egresos__comprobante=form.cleaned_data['numero_factura']).distinct()
          
                          
          return clientes
  def personas(self):
    return Proveedor.objects.all()


# Create your views here.
from gestion.contactos.models import Contacto
from gestion.cuenta_corriente.views import *
from gestion.compras.models import Proveedor
class Resumen_de_ingresos(Resumen_de_cuenta):
  
  class ReportForm(forms.Form):
		TIPOS = (
			('E','contado'),
			('C','cuenta corriente'),
		)	
		nombre = forms.CharField(max_length=50,required=False)
		cuit = forms.CharField(max_length=20,required=False)
		localidad = forms.CharField(max_length=20,required=False)
		fecha_factura_inicio = forms.DateField(required=False)
		fecha_factura_fin = forms.DateField(required=False)
		numero_factura = forms.CharField(required=False)
  
  
  def select(self):
      
                      
      return 	F('', items= [
              F('nombre',verbose='Nombre'),
              F('localidad',verbose='Localidad', title=False),
              F('cuit',verbose='Cuit', title=False),
              F('ingresos', filter={'comprobante': 'numero_factura','fecha__gte':'fecha_factura_inicio','fecha__lte':'fecha_factura_fin'},items = [
                      F('"Factura"', verbose='Nombre'),
                      F('fecha',verbose='Fecha'),
                      F('comprobante',verbose='Comprobante'),
                      F('total',verbose='Importe', total = True),
                      F('pagado',verbose='Cobrado',total_child="pagos"),
                      F('get_saldo',verbose='Saldo', total= True),
                      F('pagos', items = [
                              F('"Recibo"', verbose='Nombre'),
                              F('importe',verbose="Cobrado",total=True), 
                              F('recibo_fecha', verbose='Fecha de pago'),
                              F('comprobante', verbose="Recibo"),
                      ]),
              ]),
              F('', verbose='Importe',total=True),
              F('', verbose='Cobrado',total=True),
              F('', verbose='Saldo',total=True),
      ])

  def query(self, form):
          clientes = self.personas()  #filter(ventas__comprobante__isnull=False)
          if form.cleaned_data['nombre']:
                  clientes = clientes.filter(nombre__icontains=form.cleaned_data['nombre'])
          if form.cleaned_data['cuit']:
                  clientes = clientes.filter(cuit=form.cleaned_data['cuit'])
          if form.cleaned_data['localidad']:
                  clientes = clientes.filter(localidad__nombre=form.cleaned_data['localidad'])
          if form.cleaned_data['fecha_factura_inicio']:
                  clientes = clientes.filter(ingresos__fecha__gte=form.cleaned_data['fecha_factura_inicio']).distinct()
          if form.cleaned_data['fecha_factura_fin']:
                  clientes = clientes.filter(ingresos__fecha__lte=form.cleaned_data['fecha_factura_fin']).distinct()
          if form.cleaned_data['numero_factura']:
                  clientes = clientes.filter(ingresos__comprobante=form.cleaned_data['numero_factura']).distinct()
          
                          
          return clientes
  def personas(self):
    return Cliente.objects.all()